/**
 * 1.var声明变量有什么特点？
 * 特点：
 * 1.会进行变量提升
 *    书写顺序：
 *    console.log(a);
 *    var a=10;
 * 解析为var a;console.log(a);a=10;
 * 2.可以重复声明
 *    var a=10;
 *    var a=20;
 *    var a=30;
 * 3.不存在块级作用域
 * if(true){
 * var a=10;
 * }
 * console.log(a);//10
 */

/**
 * let声明变量的特点
 * 1.不会进行变量提升
 *     console.log(a);
 *     let a=10;//报错 Cannot access  'a' before initialization
 * 2.变量不可以重复声明
 *     let a=10;
 *     let a=20;//报错
 * 3.存在块级作用域
 * if(true){
    let a =10;
}
console.log(a);//报错a is not defined
 */
/**
 * const声明变量的特点
 * 1.不会进行变量提升
 * console.log(a);
   const a=10;//报错Cannot access 'a' before initialization
   2.不可以重复声明
     const a=10;
     const a=20;//报错
   3.存在块级作用域
    if(true){
    const a=10;
}
console.log(a);//报错 a is not defined
    4.声明变量必须进行初始化 一般用于声明常量
    var a;
    let b;
    const c=10

    5.一旦给变量初始化就不可以再次赋值
    const a=10;
    const a=20;//报错
    

 */



